﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using System.Web;
using System.Web.Mvc;
using System.Web.Security;
using ByHand.Model;
using ByHand.Services.Code;
using ByHand.Services.Interfaces;

namespace FrontEnd.Controllers
{
    public class UserController : Controller
    {
        //
        // GET: /User/

        private readonly IUserService _UserService;
        public UserController(IUserService UserService)
        {
            _UserService = UserService;
        }
        public ActionResult Index()
        {
            return View();
        }
        public ActionResult AddUser()
        {
            string email = Request.Form["email"];
            string password = Request.Form["password"];
            if (!string.IsNullOrWhiteSpace(email))
            {
                if (!string.IsNullOrWhiteSpace(password))
                {
                    var user = new User();
                    user.Password = password;
                    user.Email = email;
                    email = "";
                    password = "";
                    //partten
                    string pattern = @"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}";
                    Regex regex = new Regex(pattern);
                    if (_UserService.GetByEmail(user.Email) != null)
                    {
                        ModelState.AddModelError("EmailInvalid", "Email đã tồn tại");
                        email = "Email đã tồn tại";
                    }
                    if (string.IsNullOrWhiteSpace(user.Password) || user.Password.Length < 6)
                    {
                        ModelState.AddModelError("PasswordInvalid", "Mật khẩu gồm ít nhất 6 kí tự");
                        password = "Mật khẩu gồm ít nhất 6 kí tự";
                    }
                    if (!regex.IsMatch(user.Email))
                    {
                        ModelState.AddModelError("EmailInvalid", "Email không đúng");
                        email = "Email không đúng";
                    }

                    if (ModelState.IsValid)
                    {
                        user.JoinedDate = DateTime.Now;
                        user.Password = Utility.HashCode(user.Password);
                        user.ProperName = user.Email.Split('@')[0];
                        _UserService.Add(user);
                        FormsAuthentication.SetAuthCookie(user.Email, false);
                        return Json(new { success = true });
                    }
                }
                else
                {
                    email = "";
                    password = "Mật khẩu không được bỏ trống.";
                }
            }
            else
            {
                email = "Email không được bỏ trống.";
                password = "";
            }
            return Json(new { success = false, email = email, password = password });
        }
    }
}
